package wildcard.servlet;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import wildcard.database.DBAccess;

public class MasterEditExecuteServlet extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		// SQL結果
		ArrayList<ArrayList<String>> resultSelect;

		// SQL用パラメータ
		ArrayList<String> selectParameters = new ArrayList<String>();
		ArrayList<String> updateParameters = new ArrayList<String>();
		ArrayList<String> sqlParameters = new ArrayList<String>();

		// HTTPの設定
		req.setCharacterEncoding("UTF-8");
		HttpSession session = req.getSession();

		// ユーザIDの取得
		LoginBean loginBean = (LoginBean) session.getAttribute("LoginUser");
		String dbId = loginBean.getLoginId().substring(0, 2);
		String dbPassword = loginBean.getPassword();

		// SQL文を取得するためにデータベースにアクセスする
		String sqlId = req.getParameter("sql");

		sqlParameters.add(sqlId);
		resultSelect = DBAccess.executeSelect(dbId, dbPassword,
				DBAccess.SQL_SELECT_COMMAND, sqlParameters);

		// アクセスした結果を格納する
		String sql = resultSelect.get(1).get(0);

		// 目的の処理を行う
		try {
			String[] inputs = req.getParameterValues("values");
			for (String value : inputs) {
				updateParameters.add(value);
			}
		} catch (NullPointerException nullpo) {
			System.out.println("ｶﾞｯ");
			nullpo.getMessage();
		}

		// 目的のレコードを取得
		DBAccess.executeUpdate(dbId, dbPassword, sql, updateParameters);

		// 遷移の前に新しいテーブルを取得する
		sqlId = (String)session.getAttribute("select");
		sqlParameters.clear();
		sqlParameters.add(sqlId);

		resultSelect = DBAccess.executeSelect(dbId, dbPassword,
				DBAccess.SQL_SELECT_COMMAND, sqlParameters);
		sql = resultSelect.get(1).get(0);

		// 目的のレコードを取得
		selectParameters.clear();
		resultSelect = DBAccess.executeSelect(dbId, dbPassword, sql, selectParameters);

		// 元の画面へ遷移
		RequestDispatcher dispatcher;
		req.setAttribute("result", resultSelect);
		req.setAttribute("target", req.getParameter("target"));
		req.setAttribute("title", req.getParameter("title"));
		dispatcher = req.getRequestDispatcher("maintenance_edit.jsp");

		session.removeAttribute("select");

		dispatcher.forward(req, resp);
	}

	/*
	 *
//		// SQL13の場合、一度select文を追加する必要がある
//		String menuName = null;
//		if ("SQL13".equals(sqlId)) {
//			ArrayList<String> parameters = new ArrayList<String>();
//			parameters.add("SQL16");
//			resultSelect = DBAccess.executeSelect(dbId, dbPassword,
//					DBAccess.SQL_SELECT_COMMAND, parameters);
//			String sql16 = resultSelect.get(1).get(0);
//
//			// 名前の取得(配列の0番目)
//			parameters.add(req.getParameterValues("values")[0]);
//			resultSelect = DBAccess.executeSelect(dbId, dbPassword,
//					sql16, parameters);
//
//			// メニューカテゴリが未登録の場合
//			if(resultSelect == null) {
//				parameters = new ArrayList<String>();
//				parameters.add("SQL17");
//				resultSelect = DBAccess.executeSelect(dbId, dbPassword,
//						DBAccess.SQL_SELECT_COMMAND, parameters);
//				String sql17 = resultSelect.get(1).get(0);
//				DBAccess.executeUpdate(dbId, dbPassword, sql17, parameters);
//			}
//		}
	 */
}
